package com.foreveross.proxyip.core.pools.thread.publ;

import com.foreveross.proxyip.core.BaseCode;
import com.foreveross.proxyip.core.pools.PublicPool;
import com.foreveross.proxyip.core.pools.thread.AbsCheckInThread;

public class PublicCheckInThread extends AbsCheckInThread {
	public PublicCheckInThread(PublicPool publicPool) throws Exception {
		
		super(publicPool, CheckType.CHECKIN);
		
		super.separationTime = Integer.parseInt(BaseCode.getValue("PUBLIC_IN_SEPARATION_TIME"));
		
//		super.setConfig(poolSeparationTime,poolProxyMax, threadMaxIpCount);
	}


//	/**
//	 * 检入ip获取源
//	 * @throws Exception 
//	 */
//	public void loadSourceIps() throws Exception {
////		Integer otherIp = pool.threadMaxIpCount * 8;//多拿 8个线程ip
//		Long currSize = this.pool.poolIpMap.size();
//		
//		if(pool.proxyMax<=currSize){
//			return ;
//		}
//		Long num = pool.proxyMax*ZkAppCenter.getInstance().getAppsSize()-currSize;//应用的最大值*应用的数量
//		String task = RedisManager.getInstance().rPop(pool.sourceTask);
//		if(StringUtils.isBlank(task)){
//			//1.5倍任务量。
//			ZkPlan plan = new ZkPlan(this.pool.poolSign, "DoloadTask",  num*15/10, this.pool.sourceNum, ZkAppCenter.getInstance());
//			plan.executeWait();//这个方法会等到所有任务都执行完毕。
//		}else{//这边有足够的任务。这里一般不会执行，因为executeWait会把ZkPlan里面的队列任务全部执行完才继续运行。
//			ZkAppCenter.getInstance().executeWait(this.pool.poolSign,"DoloadTask");//颁布源ip下载任务。
//		}
//		log.info(this.pool+"_source::"+RedisManager.getInstance().getJedis().llen(this.pool+"_source"));
//		//执行该分布式任务后,公共池的ip已经放入 redis public_source队列里面了,等待再次分布式验证 
//	}

//
//	/**
//	 * 检入任务
//	 */
//	@Override
//	public void publishTask() throws Exception {
//		Long begin = System.currentTimeMillis();
//		//20分钟内执行没完成，执行失败
//			loadSourceIps();
//			ZkPlan plan = new ZkPlan(this.pool.poolSign, "PublicCheckInTask",RedisManager.getInstance().len(this.pool.poolSign+"_plan") , ZkAppCenter.getInstance());
//			plan.executeWait();
//			
//		log.info("expire time is 1200000,"+"and execute publishTask times :" + (System.currentTimeMillis()-begin));
//	}

}
